深入理解Java线程:run 与 start 方法的区别 您所在的位置:网站首页 run away和run off的区别 深入理解Java线程:run 与 start 方法的区别

深入理解Java线程:run 与 start 方法的区别

2024-06-02 12:44| 来源: 网络整理| 查看: 265

🌟 欢迎来到我的博客! 🌈 💡 探索未知,分享知识 💫 深入理解Java线程:run 与 start 方法的区别

在Java的世界里,多线程编程是一个强大的工具,可以帮助我们高效地处理并行任务和复杂的处理流程。Thread 类是Java提供的用于操作线程的核心类,而理解其中的 run 和 start 方法对于掌握多线程编程至关 重要。

在这里插入图片描述

run 方法和 start 方法的基本区别

首先,我们需要明确 run 方法和 start 方法的基本职责:

run 方法:定义了线程的执行行为,即线程启动后需要执行的具体操作。start 方法:负责启动一个新的线程,并让这个新线程去执行 run 方法中定义的代码。 这里的关键区别在于 : run 方法本身并不会创建或启动任何新的线程,它只是一个普通的方法调用。 而 start 方法才是真正触发线程并发执行的关键。 代码示例解析

为了更好地理解这两者的区别,让我们来看看下面这段简单的代码:

public class ThreadDemo5_3 { public static void main(String[] args) { Thread t = new Thread(() -> { while (true) { System.out.println("hello t"); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } }); //t.run(); t.start(); // 启动新线程 System.out.println("hello main"); } }

在这里插入图片描述 执行start()时,通过jconsole来查看线程创建情况

不难发现会有线程Thread_0运行

在这里插入图片描述

在这里插入图片描述 执行run()时,通过jconsole来查看线程创建情况

只有主线程mian在运行,并没有新的线程被创建

在这里插入图片描述

在第一个例子中,我们创建了一个匿名 Thread 对象 t,并重写了它的 run 方法来定义线程的行为。接着,我们通过调用 t.start() 来启动这个线程。

当我们运行这段代码时,将会看到两件事几乎同时发生:

1. 新线程 t 开始执行并打印出 “hello t”,每隔一秒重复一次。 2. 主线程继续执行,打印出 “hello main”。

这个并发执行的效果,正是通过 `start` 方法启动新线程实现的。如果我们将 `t.start()` 替换为 `t.run()`,就会发现 "hello t" 不再是并行打印,而是会在 "hello main" 打印之后,主线程中按顺序打印。 总结

通过以上分析和示例,我们可以清楚地看到 run 方法和 start 方法之间的区别。start 方法是多线程编程的核心,它启动一个新线程并使得线程的运行与其他线程并行进行。而直接调用 run 方法则仅仅是在当前线程中顺序执行 run 方法中的代码,不会产生新的线程执行流。

掌握这两个方法的区别对于使用Java进行多线程编程非常重要,它可以帮助我们更好地设计程序结构,充分利用多线程带来的并行处理能力。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有